package com.exception;


/**
 *  关键字：
 *      throw、throws
 *  快捷键：
 *      （选中指定代码后）Ctrl + Alt + T：选择各种代码块，包裹被选中的代码
 */
public class Test2 {

    /**
     * 主动抛出异常：throw
     *     一般在方法中使用
     * @param args
     */
//    public static void main(String[] args) {
//        // 匿名内部类
//        new Test2().test(1,0);
//    }
//
//    public void test(int a,int b){
//        if(b==0){
//            // 如果 b == 0 ，主动抛出异常
//            throw new ArithmeticException();
//        }
//        // 不管是否执行 a/b，都会在上一层抛出异常，删除下一句结果不变
//        System.out.println(a/b);
//    }


    /**
     * 主动抛出异常：throws
     *      遇到异常的方法，在内部无法处理时，一般在方法上抛出异常。内部可以处理的是，在方法中抛出异常
     *      在方法上抛出异常后，一般要在调用此方法的方法中处理异常，要么 try catch，要么继续 throw
     * @param args
     */
    public static void main(String[] args) {
        // 匿名内部类
        try {
            new Test2().test(1,0);
        } catch (ArithmeticException e) {
            System.out.println("b 不等于 0！");
        }
    }

    public void test(int a,int b)throws ArithmeticException{
        // 触发 throws 的两种情况：只要有一种存在就可以
        if(b==0){
            // 1. 使用 throw 触发 throws
            throw new ArithmeticException();
        }
        // 2. 使用 a/b 触发 throws
        System.out.println(a/b);
    }






}
